<script>
	// 所有 import 语句放在文件顶部
	import store from '@/store'
	import StoreModel from '@/common/model/Store'
	import {
		getSceneData
	} from './core/app'
	import {
		isObject
	} from './utils/util'
	import silenceUpdate from '@/uni_modules/rt-uni-update/js_sdk/silence-update.js'

	// 可以使用 Vite 的动态导入来验证路径
	const verifyPath = async () => {
		try {
			await import('@/uni_modules/rt-uni-update/js_sdk/silence-update.js');
			console.log('路径验证成功');
		} catch (error) {
			console.error('路径解析错误:', error);
		}
	};

	verifyPath();

	export default {
		/**
		 * 全局变量
		 */
		globalData: {},

		/**
		 * 初始化完成时触发
		 */
		onLaunch({
			path,
			query,
			scene
		}) {
			// #ifdef MP
			// 小程序主动更新
			this.updateManager()
			// #endif
			// app启动参数
			this.onStartupQuery(isObject(query) ? query : {})
			// 获取商城基础信息
			this.getStoreInfo()
			// 监听全局小程序返回事件
			uni.onAppShow((res) => {
				if (res.referrerInfo?.appId === 'wx048a2023b8f3de71') { // 替换为你的目标小程序appid
					uni.$emit('pageBackFromMiniProgram'); // 触发全局事件
				}
			})
		},
		onShow: function() {
			console.log('App Show')
			//#ifdef APP-PLUS
			// 获取本地应用资源版本号
			plus.runtime.getProperty(plus.runtime.appid, (inf) => {
				// 获取服务器的版本号
				const apiUrl = ''; // 这里需要补充 apiUrl 的值
				uni.request({
					url: apiUrl + '/v1/app/version',
					data: {
						edition_type: plus.runtime.appid,
						version_type: uni.getSystemInfoSync().platform, // android或者ios
						edition_number: inf.versionCode // 打包时manifest设置的版本号 
					},
					success: (res) => {
						// res.data.xxx根据后台返回的数据决定（我这里后端返回的是data），所以是res.data.data 
						// 判断后台返回版本号是否大于当前应用版本号 && 是否发行 （上架应用市场时一定不能弹出更新提示）
						try {
							if (Number(res.data.data.edition_number) > Number(inf.versionCode) &&
								res.data.data.edition_issue == 1) {
								// 如果是wgt升级，并且是静默更新 （注意！！！ 如果是手动检查新版本，就不用判断静默更新，请直接跳转更新页，不然点击检查新版本后会没反应）
								if (res.data.data.package_type == 1 && res.data.data
									.edition_silence == 1) {
									// 调用静默更新方法 传入下载地址
									setTimeout(_ => {
										silenceUpdate(res.data.data.edition_url)
									}, 5000);
								} else {
									// 跳转更新页面 （注意！！！如果pages.json第一页的代码里有一打开就跳转其他页面的操作，下面这行代码最好写在setTimeout里面设置延时3到5秒再执行）
									setTimeout(_ => {
										uni.navigateTo({
											url: '/uni_modules/rt-uni-update/components/rt-uni-update/rt-uni-update?obj=' +
												JSON.stringify(res.data.data),
											fail: function(err) {
												console.error('页面跳转失败:', err)
											}
										});
									}, 5000)
								}
							}
						} catch (e) {
							console.error('版本比较出错:', e)
						}
					},
					fail: (err) => {
						console.error('请求服务器版本号失败:', err);
					}
				})
			});
			//#endif  
		},
		onHide: function() {
			console.log('App Hide')
		},

		methods: {

			// app启动参数
			onStartupQuery(query) {
				// 获取二维码场景值
				const scene = getSceneData(query)
				// 记录推荐人ID
				const refereeId = query.refereeId ? query.refereeId : scene.uid
				refereeId > 0 && (this.saveRefereeId(refereeId))
			},

			// 记录推荐人ID
			saveRefereeId(refereeId) {
				store.dispatch('SaveRefereeId', refereeId)
			},

			// 获取商城基础信息
			getStoreInfo() {
				StoreModel.data(false)
			},

			// 小程序主动更新
			updateManager() {
				const updateManager = uni.getUpdateManager()
				updateManager.onCheckForUpdate(res => {
					// 请求完新版本信息的回调
					// console.log(res.hasUpdate)
				})
				updateManager.onUpdateReady(() => {
					uni.showModal({
						title: '更新提示',
						content: '新版本已经准备好，即将重启应用',
						showCancel: false,
						success(res) {
							if (res.confirm) {
								// 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
								updateManager.applyUpdate()
							}
						}
					})
				})
				updateManager.onUpdateFailed(() => {
					// 新的版本下载失败
					uni.showModal({
						title: '更新提示',
						content: '新版本下载失败',
						showCancel: false
					})
				})
			}

		}
	}
</script>

<style lang="scss">
	/* 引入uni.scss，确保变量定义被加载 */
	@import "./uni.scss";
	/* uView库样式 */
	@import "./uni_modules/vk-uview-ui/index.scss";
	/* 项目基础样式 */
	@import "./app.scss";
	/* iconfont图标库 */
	@import "./utils/iconfont.scss";
</style>